using System;
using System.Data.Objects;
using System.Reflection;

namespace ELinqParser
{
	internal class EfQueryModel
	{
	}

	internal class SelectModel : EfQueryModel
	{
		public Selectable[] What;
	}

	internal class Selectable
	{
		public string Name;
	}

	internal class SelectableTuple : Selectable
	{
		public Selectable[] Columns;
	}

	internal class SelectableEntity : Selectable
	{
		public Type EntityType;
	}

	internal class SelectableAggregate : Selectable
	{
		public MethodInfo Function;
	}

	internal class SelectableProperty : Selectable
	{
		public PropertyInfo Prop;
	}

	internal abstract class From
	{
	}

	internal class FromObjectsQuery : From
	{
		public ObjectQuery Query;
	}

	internal class FromGroupBy : From
	{
		public SelectModel Source;
		public Selectable Key;
	}

}